Gitlab 数据备份和还原(填坑版)

您所在的位置:网站首页 gitlab 迁移数据 Gitlab 数据备份和还原(填坑版)

Gitlab 数据备份和还原(填坑版)

2023-10-04 10:59| 来源: 网络整理| 查看: 265

此文章适用于因更换服务器或者 gitlab 安装方式变更(普通方式 docker)进行数据迁移,或者日常备份还原。

前提条件:备份和还原的 gitlab 版本一致!

gitlab 版本查看命令:gitlab-rake gitlab:env:info

在这里插入图片描述

PS:如果是 docker 安装方式,请先登录容器在执行该命令,登录容器命令:docker exec -it gitlab /bin/bash

1 数据备份(操作备份服务器)

执行备份命令,如果是 docker 安装需要先登录到 gitlab 容器

gitlab-rake gitlab:backup:create

命令执行后,会在 /var/opt/gitlab/backups/ 目录下生成一个类似于 1666142751_2022_10_19_13.6.7_gitlab_backup 备份文件,如果是 docker 安装,该文件在生成容器时配置的挂载路径中。

注意:备份中会提示“gitlab.rb 和 gitlab-secrets.json 中存在敏感信息”,不需要管。

2 拷贝数据

将备份文件、gitlab.rb、gitlab-secrets.json(后面两个文件在 /etc/gitlab 目录中,docker 安装请查阅对应的挂载目录)上传到还原服务器临时目录上。 上传的方法就不详细说明了,小编这边是使用的 Secure CRT 通过 SSH 连接备份服务器,先将文件保存在 Secure CRT 安装电脑上。然后再连接还原服务器,将文件上传至临时目录。

3 还原数据(操作还原服务器) 3.1 复制还原包

将临时目录中的 1666142751_2022_10_19_13.6.7_gitlab_backup 文件复制到 /var/opt/gitlab/backups/ 目录下(docker 安装复制到对应的挂载目录下)

3.2 修改 postgresql 配置

这一步十分重要,否则在还原过程中会出现错误!错误信息如下:

Restoring PostgreSQL database gitlabhq_production ... ERROR: must be owner of extension pg_trgm ERROR: must be owner of extension btree_gist ERROR: must be owner of extension btree_gist ERROR: must be owner of extension pg_trgm

如果是 docker 安装,在执行下面的操作之前,请先登录到 gitlab 容器中

3.2.1 修改 postgresql.conf

vim /var/opt/gitlab/postgresql/data/postgresql.conf

修改配置:

listen_addresses = '*'

说明:修改端口监听地址,默认监控 localhost,* 代表 all

3.2.2 修改 pg_hba.conf

vim /var/opt/gitlab/postgresql/data/pg_hba.conf

增加配置:

local all all trust host all all 127.0.0.1/32 trust 3.2.3 重启 gitlab

gitlab-ctl restart

3.2.4 修改 postgresql 权限 $ su - gitlab-psql $ /opt/gitlab/embedded/bin/psql -h 127.0.0.1 gitlabhq_production gitlabhq_production=# ALTER USER gitlab WITH SUPERUSER; ALTER ROLE gitlabhq_production=# \q $ exit 3.3 执行恢复命令

gitlab-rake gitlab:backup:restore BACKUP=1666142751_2022_10_19_13.6.7

BACKUP后面的标签是备份文件名前面部分

3.4 复制 gitlab.rb 和 gitlab-secrets.json

将 gitlab.rb、gitlab-secrets.json 复制到 /etc/gitlab 目录下(docker 安装复制到对应的挂载目录下)

注意:请仔细检查 gitlab.rb 文件中以下配置是否正确,如果不正确可能导致浏览器无法访问 gitlab

external_url gitlab_rails['gitlab_ssh_host'] gitlab_rails['gitlab_shell_ssh_port'] nginx['listen_port']

PS:nginx['listen_port'] 不指定 nginx 会默认监听 external_url 的端口,若 external_url 没有指定端口,则 nginx 监听 80 端口



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3